package co.gov.medellin.ssti.sub.model.dao;

import java.util.Collection;
import java.util.List;

import co.gov.medellin.ssti.sub.model.vo.BeneficioOtorgadoEmpresaVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioOtorgadoVO;
import co.gov.medellin.ssti.sub.model.vo.BeneficioVO;
import co.gov.medellin.ssti.sub.model.vo.CondicionConsultaVO;
import co.gov.medellin.ssti.sub.model.vo.EmpresaVO;
import co.gov.medellin.ssti.sub.model.vo.ProgramaVO;
import co.gov.medellin.ssti.sub.model.vo.RepAtributoVO;
import co.gov.medellin.ssti.sub.model.vo.RepEmpresaVO;
import co.gov.medellin.ssti.sub.model.vo.ReportComunaVO;
import co.gov.medellin.ssti.sub.model.vo.ReporteTotalComunaVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;

public interface EmpresaDAO {

	Collection<EmpresaVO> findAllEmpresas();

	Collection<EmpresaVO> findEmpresaByCriteria(EmpresaVO criteria);

	EmpresaVO findEmpresaByCodigo(long codigo);

	int actualizarEmpresa(EmpresaVO empresa);

	int ingresarEmpresa(EmpresaVO empresa);

	Collection<BeneficioOtorgadoVO> findBeneficios(EmpresaVO criteria);

	Collection<BeneficioOtorgadoEmpresaVO> findUltimosBeneficios(
			Long codigoEmpresa);

	Collection<BeneficioVO> findDetalleBeneficios(Long codigoBeneficio,
			Long codigoEmpresa);

	Collection<BeneficioOtorgadoEmpresaVO> findReporteDetalladoBeneficios(
			RepEmpresaVO criteria, List<CondicionConsultaVO> filtros);

	Collection<BeneficioOtorgadoEmpresaVO> findReporteTotalBeneficios(
			RepEmpresaVO criteria, List<CondicionConsultaVO> filtros);

	Collection<ProgramaVO> findProgramasEntregados();

	Collection<ProgramaVO> findProgramasEntregadosByCriteria(EmpresaVO criteria);

	Collection<SubprogramaVO> findSubprogramasEntregados(Long codePrograma);

	Collection<ProgramaVO> findProgramasParaEmpresa();

	Collection<SubprogramaVO> findSubprogramasParaEmpresa(Long codePrograma);

	ReporteTotalComunaVO findFiltersComuna(ReporteTotalComunaVO objRtcVO);

	Collection<ReportComunaVO> findBeneficiosEmpresasComuna(
			ReporteTotalComunaVO criteria,
			Collection<CondicionConsultaVO> filtros);

	Collection<BeneficioOtorgadoEmpresaVO> findResumenBeneficioOtorgadoDetByCriteria(
			RepEmpresaVO criteria);

	Collection<BeneficioOtorgadoEmpresaVO> findReporteBeneficioOtorgadoDet(
			List<RepAtributoVO> atributosEspecificos,
			List<CondicionConsultaVO> filtros, RepEmpresaVO criteria);

	Collection<String> findActividadesEconomicas();

	Collection<EmpresaVO> findEmpresasByActividadEconomica(
			String actividadEconomica);
}
